﻿/*
 * 2023/3/14
 * 自定义异常过滤器
 * 要使过滤器生效，一定要注册
 * 
 * **/
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;

namespace _2008A.PH5._0221_0317.FuXi.API.MyFilter
{
    public class MyExceptionFilter : IExceptionFilter
    {
        public void OnException(ExceptionContext context)
        {
            //要知道这个异常有没有被处理过
            if (!context.ExceptionHandled)
            {
                //没有处理过，我们才处理
                //采用什么样的处理方式：将异常写入Nlog日志文件
                var log = NLog.LogManager.GetCurrentClassLogger();
                log.Error(context.Exception.Message);

                //也可以出错的同时，给前端一个友好的错误提示
                context.Result = new JsonResult(new {code = 500, message = context.Exception.Message });
            }

            //告知系统，这个异常已被处理过
            context.ExceptionHandled = true;
        }
    }
}
